package com.kpmg.datalake.common.dynamicdatasource;

/**
 * 动态数据源上下文.
 *
 * @author Alex.zhao
 * @version v.0.1
 */

public class DynamicDataSourceContextHolder {


    private DynamicDataSourceContextHolder() {
    }
    /**
     * 当使用ThreadLocal维护变量时，ThreadLocal为每个使用该变量的线程提供独立的变量副本，
     * <p>
     * 所以每一个线程都可以独立地改变自己的副本，而不会影响其它线程所对应的副本。
     */

    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();

    /**
     * 使用setDataSourceType设置当前的
     *
     * @param dataSourceId dataSourceId
     */

    public static void setDataSourceType(String dataSourceId) {

        CONTEXT_HOLDER.set(dataSourceId);

    }


    public static String getDataSource() {

        return CONTEXT_HOLDER.get();

    }


    public static void clearDataSource() {

        CONTEXT_HOLDER.remove();

    }


}
